簡體   English   中英

Java線程或Cuda線程

[英]Java Threads or Cuda Threads

我將使用並行處理開始一個項目,我想知道我是否將從使用Java線程或從Cuda編程中獲得更多的優化? 我也不是這兩種方案的專家,哪條路線的學習曲線較小?

簡短的答案:這取決於您要解決的問題。

長答案:

Java和Cuda中的並行處理之間有一些非常根本的區別。 最大的區別是作業的打包和執行方式。 在Java中,您將編寫一個程序來加載數據,然后使用ExecutorService之類的東西來執行任務。 在Cuda中,您將加載數據,然后編寫一段實際執行代碼(在Cuda中,這稱為內核)。 聽起來差不多吧? 但事實並非如此。 Cuda涉及其他內存開銷。 GPU的內存有限,因此您的軟件必須先加載數據,然后將其打包為內核的一部分,然后將其發送到GPU,然后再存儲數據並執行計算。 然后,您的應用程序必須檢索結果。 這對於某些計算問題確實非常有效,但對於其他計算問題卻效率低下。 這完全取決於您要完成的工作。

如果您有一個簡單的任務需要執行多次(數千次或更多次),則GPU很有用。您可以使用OpenCL訪問GPU。 一個Java包裝器是http://www.jocl.org/其他的是http://jogamp.org/jocl/www/http://code.google.com/p/nativelibs4java/wiki/OpenCL,但我還沒嘗試過

對於通用編程,CPU要好得多。 您可能會驚訝於在單個線程中可以完成多少工作,更不用說在具有多個內核的Socket上了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM