Intel has just released a free Application Concurrency Audit Tool called CFinder. I'm setting up this discussion thread to provide support to CFinder users and discuss the tool. Please take a moment to download and run it on the application you are developing. We want to hear your feedback and incorporate your ideas into future versions of the tool.
I got an error box when applying CFinder for quicksort. It says "Get max thread error" and "Can't queue data" a while after I pressed start button. It seems that CFinder can't get the thread information in the first run but can I solve it? Thanks.
Sunwei, I'll see if we can get the same error and work on a solution this coming week. Thank you for the feedback. Please check back in a few days and I hope to have a recommendation/update/fix by then.
That's fine. The PC I use is DELL latitude D620 laptop with Intel Core Duo 2.0G with 2048KB cache, 2G DDR667 SDRAM, running Windows XP. The compiler is Visual C++ 2005 Express free version. Thanks.
We couldn’t recreate the error and would like to get to the bottom of the issue.
Could you please:
1)To Send us his “quicksort†binary (.exe) file.
2)All the necessary info like: duration, sampling rate and so on.
3)How he ran CFinder. For example, did he just entered the info and let CFinder? Did he do anything else like running other programs when CFinder is running?
4)Did his program “quicksort†still run after CFinder completed the first run or terminated?
I'm not a big fan of posting my work email on forums, but will share my hotmail account for you to sendaarontersteeg@hotmail.com. You might need to change the exe to xex to get by the spam filters. Let me know when the email has been sent and I'll go check it.
In looking briefly at CFinder, the biggest problems using it for Java would be
The thread number in the concurrency tool is not particularly meaningful for Java developers. This is because the JVM creates some threads that the Java developer is typically unaware of.
There are Java interfaces for querying the "name" and threadgroup of assorted threads. These may be of value if one wanted to extend this tool to be more meaningful for Java developers.
The CFinder tool runs the application twice. There is no guarantee that threads will be created in the same order on subsequent executions. This is the same problem with native applications however.
Intel's threadchecker and threadprofiler tools do not support Java (that I am aware of). While this is unfortunate, there are some other options for subsequent analysis.
Other tools, such as VTune help identify the most time consuming Java code to help pinpoint pieces of the code where parallel constructs should be used.
Other tools, such as the Eclipse TPTP profiler provide threading views customized for Java that help identify the most critical locks and interactions between threads.
These together should be used to identify opportunities for additional thread parallelism. In addition, if the tools identify some core hotspots in your applications hashmaps, queues, etc, one should consider porting their java application to use java/util/concurrent parallelized versions. These are an approximate Java analogue to the ThreadBuildingBlocks for native Applications.
Other than this, it seems like CFinder would be as helpful for Java developers as for native developers who want to know if their application threads are efficient and whether their applications are written to achieve best performance on multicore and multiprocessor platforms.
CFinder with app of notepad and pasting bunches of stuff for 20sec
admittedly this only has a single thread...
CFinder with an app of java and a "hello world" application parameter
I cannot help but think I have something installed wrong? It could be that I have an incompatible version of the PDH library installed on my system? I assume that PDH is being used to get the windows system monitor details...
annoyance... It would be nice to be able to type in (or paste) the application to run instead of having to browse for it.
annoyance... I'm still not 100% sure I understand why the application needs to run twice. For some apps (particularly short running ones), the second run is sometimes less interesting than the first run because of assorted cache behavior changes that may occur the second time around...
For example when running with IExplore and google.com, the first time (today) took about 20secs while the second time only took about 10-15secs... [browsers tend to have some heuristics to decide how often they need to update their caches, etc]...
Thank you very much for posting. We are very glad that you are take time and trying CFinder. We are collecting feedback for future CFinder release. Here are a few thoughts on your specific comments.
1)We value your concern about Java. Currently CFinder is not meant for Java. If we collect enough requests for Java, we will see how best to add Java support to future release of CFinder.
2)CFinder has been tested on many applications including multimedia and gaming applications.
3)I will take your recommendation about the ability to type in or paste in the path. We will add this to the list of future features for the next CFinder release.
4)Cfinder needs to run the app twice. In the first run, Cfinder will obtain the maximum number of threads generated by the app since there is no way to know ahead of time how many threads are created by the app. Threads can be dynamically created and destroyed during the run. CFinder will actually collect the data in the second run.
Again, thank you very much for providing valuable feedback. I know just like all of us, we are very busy, but you still take your valuable time from your busy schedule testing CFinder and providing feedback. Future CFinder will get better due to valuable feedbacks as yours.
CFinder is a nice little free tool for quickly analyzing
the degree to which a Windows program executes concurrently in a
specific run (or set of runs). It’s a clear step up from the simple
timing of execution instances that I applied for years to test the
effect of edits to my multithreaded applications. I think I’ll keep it!
I'm unable to run this tool on any application. I've got "-1073738824" "Add counter failed" MessageBox, then "Error" "Cannot get elapsed time!!!".
Here is output from command-line utility:
======== cut ======== CFinder 1.0
---- System Detection ---- Total Sockets: 1 Total Cores: 2 Total Logicals: 2 Multi-processor: No Multi-core: Yes Hyper Threading: Not capable Computername: HAX System information: OEM ID: 0 Processor Architecture:Native x86 (Intel) Processor Level: 6 Processor type: 586 Page size: 4096 Hardware Profile: DockInfo: 7 Profile Guid: {4f21c240-1f78-11da-aba1-806d6172696f} Friendly Name: Profile 1 CPU Frequency (MHz): 2395 size 46
---- Application Detection ---- Application Name:D:Gamescrayoncrayon.exe Application Parameters: Sampling interval (msec):100 CPU Utilization (percentage) Min: Avg: Max: Number of Threads: Min: Avg: Max: Elapsed Time (ms): Number of Samples: 0
Press Enter key to exit... ======== cut ========
How can I solve this?
Note: 1) I have downloaded version 1.1 from Intel site. Command line utility shows "CFinder 1.0", and "Product version" in executable resources is 1.0 too.
2) archive contains files "0_WARNING.HTM" and "1_WARNING.HTM", which should not be there.
3) there is no description for "Manual capture" option in manual.
I am newbie in TBB and CFinder. I was trying to test sub_string_finder_pretty (which i downloaded from TBB website, it is one of Getting Started program) but i am getting following error while executing it with CFinder
"Get Max Thread Error"
"Cannot get total number of threads"
I can't get it to work. After selecting the path to the executable and pressing START, I see "-1073738824" "Add counter failed" MessageBox, then "Error" "Cannot get elapsed time!!!" Even at the program, which operates at 100%, such as a notepad.
I can't get it to work. After selecting the path to the executable and pressing START, I see "-1073738824" "Add counter failed" MessageBox, then "Error" "Cannot get elapsed time!!!" Even at the program, which operates at 100%, such as a notepad.
Please help.
And I get the same error
There is something resolved, some patch?