Jump to content

Jud

Members
  • Content Count

    118
  • Joined

  • Last visited

Everything posted by Jud

  1. Interesting idea, but I don't know how to deal with the GPU. This will be running 20 instances in parallel, but the accesses will be pretty much random. The target calls for doing at least 10 trillion accesses.
  2. Performance is an issue. The plan is to do at least 10 trillion accesses to the bit vector - more if I can manage it.
  3. Here is a short demo. With Delphi 11.3 I get a compiler error on the line with using BlockWrite as a function. The documentation says that BlockWrite is a function that returns an integer. procedure ErrorDemo; var CountNewData, WriteResult : integer; OutFile : file; NewData : array of int64; begin AssignFile( OutFile, 'c:\NewData.data'); rewrite( OutFile, 8); WriteResult := BlockWrite( OutFile, NewData[ 0], CountNewData, WriteResult); { compiler error - E2010 incompatible types - integer and procedure } BlockWrite( OutFile, NewData[ 0], CountNewData, WriteResult); // no error CloseFile( OutFile); end;
  4. It is a compiler error - not a runtime error.
  5. 1. 32GB is nothing today. Every computer here that it might be running on has at last 128GB of RAM. 2. No, this is the best approach.
  6. I estimate that about 5% of the bits will be 1s. They will be read-only in the actual run, so the data will be shared among 20 threads. I don't understand how storing just the 1s would work. That would result in a series of about 15,000,000 1s, but that would be useless.
  7. Yes, I need more. I current;y need about 300 billion bits. I can write it myself, but I thought there might be one already available.
  8. Recent models of Intel processors (12th and 13th generations) have Performance cores and Efficient cores. How does Delphi (11.3 in particular) handle this with the parallel for? Does it assign tasks only to performance cores or all cores?
  9. Well, I need all of the power I have available. BUT - I realized a fallacy in my thinking and analysis. I assumed that if I ran 16 threads with the parallel for loop, they would all be on performance cores, and that if I ran 20 threads, the extra 4 would go to the efficient cores. But after more experimentation, parallel for seems to put the threads on any core. I thought of timing how long each thread took to run, and with, say 20 threads, there wasn't that much difference. And running 20 threads with parallel for (with 8 P=cores and 4 E-cores), the performance was 9-10% better than running 16 threads. So it is using the E-cores too. And running 100 or so threads, it pretty much evens out the difference between the E and P cores (because the ones on the P-cores finish sooner and get reassigned another thread.)
  10. I don't know how it is handled, which is why I was asking.
  11. I moved from an old computer to a new one, I get the following message about not being able to add columns or rows when I try to bring up a VCL project that worked on the old computer. I used the migration tool to copy my settings to the new computer. How can this be fixed? Also, I get a bunch of access errors after this. PS - also, this seems to happen with every VCL project but not with console apps.
  12. Sorry for the delay, but that fixed it.
  13. Thanks. After I had posted the message and two updates, I searched for the words in the error message and found that the problem had been answered: "That is known (reported issue). There is some problem with migrating or applying Welcome screen layout after migration. When you launch IDE click Edit Layout on Welcome Screen. Reset Welcome Screen to default layout and then adjust it again the way you like it. Next time you start IDE it should run normally."
  14. I also get this error when trying to start a new VCL project. Can someone help?
  15. Where can I download the update from Delphi Pro 11.0 to 11.1? GetIt doesn't show it, and if I follow links, it is to download a trial or buy it.
  16. Jud

    Download upgrade from 11.0 to 11.1

    Found it on the left. Thanks!
  17. On some programs I get strange stack overflow messages. For instance, in a program that I'm working on in Delphi 11 now. In the IDE, I run it, enter some stuff into VCL controls, and click a button to run a procedure. It all works. As long as I have it running, I can run the procedure again, with or without new parameters. If I exit from the IDE, restart the IDE, DON'T make any changes to the source code, and try to run it, it gives a stack overflow message at the first line of the procedure when I click the button to run it. If I make ANY change to the source code, even adding a space and leaving it in or removing it, then I don't get the stack overflow message. Also, after I get the stack overflow message in the IDE, if I then exit the IDE and run the EXE, I get the stack overflow message. Does anyone know what is happening and how to fix it (other than making a change to the source code between each run)? Additional information: it happens in 64-bit mode but not 32-bit mode.
  18. If you have started more TTasks than you have logical CPUs, does it do them in parallel or does it finish one before starting the next one in the queue? Example, you have a CPU with 8 logical cores and start 9 TTasks. Does it finish one of the first 8 before starting #9?
  19. Jud

    Many TTasks

    But I know that the number of tasks is going to be considerably larger than the number of logical CPUs.
  20. Jud

    Many TTasks

    I was just using that as an example. But I have a routine that tells me the number of logical cores.
  21. Jud

    Many TTasks

    Thanks, that is what I was wondering. I know how to wait for ONE task to finish and to wait for ALL tasks to finish. So for 9 tasks with 8 logical CPUs, I can wait for one to finish before starting the 9th one. But what if there are, say, 20 tasks, and I don't want to run all so in parallel. Is there an easy way to keep only 8 running in parallel at the time?
  22. Jud

    Maximum static memory

    What is the largest amount of static memory you can get in Windows? I know about the 2GB limit on static structures (even on 64-bit platform!) The most static memory I can get is about 1,994,000,000 bytes - then I start getting access violations. Is there a way to get larger static arrays or is there a way to get several static arrays under 2GB each, with the total static memory over 2GB?
  23. Jud

    Maximum static memory

    I don't know how. Is there a blog for Delphi?
  24. Jud

    Maximum static memory

    Maybe. It was a few years ago. I was getting the memory available inside my program too, I think. But last night I had a good insight - rather than set up the 100,000,000+ potential buckets when only a few thousand of them will have something in them, do a pass through the data to see what buckets will have something in them and set up only that many buckets! I haven't had a chance to work on that yet, but it should be faster than quicksort and make the final processing step faster too.
×