ãã®æçš¿ã§ã¯ãããããã€ã³ã¿ã©ã¯ãã£ããããã³åæ£åŠçã®ããã«ãIntel Data Analytics Acceleration LibraryïŒIntel DAALïŒãGoããã°ã©ãã³ã°èšèªãšãšãã«äœ¿çšããæ¹æ³ã«ã€ããŠèª¬æããŸãã
Goã«åºã¥ããŠã Kubernetes ã Docker ã Consul ã etcdãªã©ãææ°ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãããžã§ã¯ããæ§ç¯ãããŸããã Goã¯ãDevOpsãWebãµãŒããŒãããã³ãã€ã¯ããµãŒãã¹ã®åªå èšèªã«ãªãã€ã€ãããŸãã ãã®èšèªã¯ç¿åŸã容æã§ãå±éãç°¡åã§ãéåžžã«é«éã§ãåªããéçºããŒã«ã»ãããåããŠããŸãã
ããŒã¿ã®åŠçãšåæã¯ããžãã¹ã§ãŸããŸãé »ç¹ã«äœ¿çšããããããGoèšèªã䜿çšãããã¬ãã«ãå«ããäŒæ¥ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã¹ãŠã®ã¬ãã«ã§ãªãœãŒã¹éçŽåã®èšç®ã¢ã«ãŽãªãºã ãå®è£ ããå¿ èŠããããŸãã è«ççãªçåãçããŸããæ©æ¢°åŠç¿ãåæ£ããŒã¿å€æã察話åããŒã¿åæãªã©ã®ãœãªã¥ãŒã·ã§ã³ãGoããŒã¹ã®ã·ã¹ãã ã«ã©ã®ããã«çµ±åããã®ã§ããããã
Goã§ããŒã¿ã確å®ãè¿ éãã¹ã±ãŒã©ãã«ã«åŠçãã1ã€ã®æ¹æ³ã¯ãGoããã°ã©ã ã§Intel Data Analytics Acceleration Library ïŒIntel DAALïŒã䜿çšããããšã§ãã ãã®ã©ã€ãã©ãªã¯ãããŸããŸãªäŸ¿å©ãªã¿ã¹ã¯ã®ããã®ããããã€ã³ã¿ã©ã¯ãã£ããããã³åæ£åŠçã¢ã«ãŽãªãºã ãæäŸããŸãã
Goã¯C / C ++ã§æ£åžžã«æ©èœããããããã®æ©èœãGoããã°ã©ã ã«ããã»ã©å°é£ãªãå®è£ ã§ããŸãã åæã«ãé床ã®é¢ã§ã倧ããªã¡ãªããããããŸãããããã®ã©ã€ãã©ãªã¯ãã§ã«Intelã¢ãŒããã¯ãã£åãã«æé©åãããŠããŸãã ããã«ç€ºãããã« ãäž»èŠã³ã³ããŒãã³ãã®åæãªã©ã®ç¹å®ã®æäœã§ã¯ãIntel DAALã¯ãMLlibã䜿çšããSparkããã7åé«éã«å®è¡ã§ããŸãã ããã¯ãšãŠãã¯ãŒã«ã§ãïŒ Goã¢ããªã±ãŒã·ã§ã³ã§ãã®ãããªãã¯ãŒã䜿çšãããšéåžžã«äŸ¿å©ã§ãã
Intel DAALãã€ã³ã¹ããŒã«ãã
Intel DAALã¯ãªãŒãã³ãœãŒã¹ãšããŠå ¥æã§ããŸãã以äžã®æé ã«åŸã£ãŠã€ã³ã¹ããŒã«ããŠãã ããã ç§ã®Linuxã³ã³ãã¥ãŒã¿ãŒã§ã¯ãä¿¡ããããªãã»ã©ç°¡åã§ããã
- ãœãŒã¹ã³ãŒããããŠã³ããŒãããŠãã ããã
- ã€ã³ã¹ããŒã«ã¹ã¯ãªããã®å®è¡ã
- å¿ èŠãªç°å¢å€æ°ãèšå®ããŸãïŒãã®ããã«æäŸãããã·ã§ã«ã¹ã¯ãªããã䜿çšããããšãã§ããŸãïŒã
Intel DAALãGoããã°ã©ã ã«çµ±åããåã«ããã¹ãŠãæ£ããæ©èœããããšã確èªããããšã¯çã«ããªã£ãŠããŸãã ãã®ããã«ã Intel DAALã®ããã¥ã¡ã³ãã«ããããŸããŸãªå ¥éã¬ã€ãã䜿çšã§ããŸãã ç¹ã«ããããã®ããã¥ã¢ã«ã¯ãã³ã¬ã¹ããŒå解ã¢ã«ãŽãªãºã ã® Intel DAALã¢ããªã±ãŒã·ã§ã³ã®äŸãæäŸããŸã ã 以äžã§ã¯ãGoèšèªã§äœæããããšããŸãã C ++ã®ã³ã¬ã¹ããŒå解ã¢ã«ãŽãªãºã ã®æåã®äŸã¯æ¬¡ã®ããã«ãªããŸãã
/**************************************************************************** ! Copyright(C) 2014-2017 Intel Corporation. All Rights Reserved. ! ! The source code, information and material ("Material") contained herein is ! owned by Intel Corporation or its suppliers or licensors, and title to such ! Material remains with Intel Corporation or its suppliers or licensors. The ! Material contains proprietary information of Intel or its suppliers and ! licensors. The Material is protected by worldwide copyright laws and treaty ! provisions. No part of the Material may be used, copied, reproduced, ! modified, published, uploaded, posted, transmitted, distributed or disclosed ! in any way without Intel's prior express written permission. No license ! under any patent, copyright or other intellectual property rights in the ! Material is granted to or conferred upon you, either expressly, by ! implication, inducement, estoppel or otherwise. Any license under such ! intellectual property rights must be express and approved by Intel in ! writing. ! ! *Third Party trademarks are the property of their respective owners. ! ! Unless otherwise agreed by Intel in writing, you may not remove or alter ! this notice or any other notice embedded in Materials by Intel or Intel's ! suppliers or licensors in any way. ! !**************************************************************************** ! Content: ! Cholesky decomposition sample program. !***************************************************************************/ #include "daal.h" #include <iostream> using namespace daal; using namespace daal::algorithms; using namespace daal::data_management; using namespace daal::services; const size_t dimension = 3; double inputArray[dimension *dimension] = { 1.0, 2.0, 4.0, 2.0, 13.0, 23.0, 4.0, 23.0, 77.0 }; int main(int argc, char *argv[]) { /* Create input numeric table from array */ SharedPtr inputData = SharedPtr(new Matrix(dimension, dimension, inputArray)); /* Create the algorithm object for computation of the Cholesky decomposition using the default method */ cholesky::Batch<> algorithm; /* Set input for the algorithm */ algorithm.input.set(cholesky::data, inputData); /* Compute Cholesky decomposition */ algorithm.compute(); /* Get pointer to Cholesky factor */ SharedPtr<Matrix > factor = staticPointerCast<Matrix, NumericTable>(algorithm.getResult()->get(cholesky::choleskyFactor)); /* Print the first element of the Cholesky factor */ std::cout << "The first element of the Cholesky factor: " << (*factor)[0][0]; return 0; }
ãã®ã³ãŒããã³ã³ãã€ã«ããŠå®è¡ããIntel DAALãæ£åžžã«ã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ããã ããã«ãããã«ãããGoã§äœãããã®ããããããŸãã Intel DAALã®ã€ã³ã¹ããŒã«ã«é¢ãã質åãåé¡ã«ã€ããŠã¯ã Intel DAALãã©ãŒã©ã ã§è°è«ã§ããŸãïŒå人çã«ã¯ããã®ãã©ãŒã©ã ã¯ãIntel DAALã§äœæ¥ãå§ãããšãã«éåžžã«åœ¹ç«ã€ãªãœãŒã¹ã§ããããšãããããŸããïŒã
Goããã°ã©ã ã§Intel DAALã䜿çšãã
Goããã°ã©ã ã§Intel DAALã©ã€ãã©ãªã䜿çšããããšã«ã€ããŠè©±ããŠããå Žåãããã€ãã®éžæè¢ããããŸãã
- ã©ãããŒé¢æ°ãä»ããŠGoããIntel DAALãçŽæ¥åŒã³åºããŸãã
- ç¹å®ã®Intel DAALæ©èœãåããåå©çšå¯èœãªã©ã€ãã©ãªãäœæããŸãã
以äžã«ããããã®ã¢ãããŒãã®äž¡æ¹ã瀺ããŸãã ãã¹ãŠã®ãœãŒã¹ã³ãŒãã¯ãã¡ãããå ¥æã§ããŸã ã ããã¯ã»ãã®äžäŸã§ãã æéãçµã€ã«ã€ããŠãIntel DAALã䜿çšããä»ã®Goããã°ã©ã ããã®ãªããžããªã«è¿œå ã§ããã°ãããšæããŸãã å®éšã«ã€ããŠã¯ããåãåãããã ããã ç§ã¯ããªããäœæãããã®ãèŠãŠéåžžã«èå³ããããŸãã
Goã䜿çšããããšããªãå Žåã¯ããã®èšäºãç¶ããåã«ããã®èšèªã«æ £ããããšããå§ãããŸãã Goã¯ãåŠç¿ãéå§ããããã«ããŒã«ã«ã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããå¿ èŠãããªãããšã«æ³šæããŠãã ããã Go on the InternetãšGo Playground Webãµã€ãã®çŽ¹ä»ãå©çšããŠãæºåãã§ãããGoãããŒã«ã«ã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ã§ããŸã ã
GoããçŽæ¥Intel DAALã©ã€ãã©ãªãåŒã³åºã
Goã«ã¯ãCã³ãŒããåŒã³åºãGoããã±ãŒãžãäœæã§ããcgoãšããããŒã«ãçšæãããŠããŸããããã®å Žåãcgoã䜿çšããŠGoããã°ã©ã ãšIntel DAALã©ã€ãã©ãªã®çžäºäœçšãæŽçããŸãã
ã¡ãªã¿ã«ãGoããã°ã©ã ã§ã®cgoã®äœ¿çšã«ã¯ãã€ã³ã¿ãŒãããã§ååã«è©³çŽ°ã«è°è«ãããŠããç¹å®ã®å¶éããããŸãïŒç¹ã«ã Dave Cheneyã«ããè°è«ãŸãã¯Cockroach Labsã«ãããã®èšäºãåç § ïŒã cgoã®äœ¿çšã決å®ãããšãã¯ããããã®å¶éãåžžã«èæ ®ã«å ¥ããããå°ãªããšãèŠããŠãããŠãã ããã ãã®å Žåãæé©åãããåæ£ã©ã€ãã©ãªIntel DAALã掻çšããããã«ãcgoã®å¶éã調æŽããæºåãã§ããŠããŸãïŒãããã®å¶éã¯ãé«ãèšç®è² è·ãŸãã¯å€§éã®ããŒã¿ãããç¹å®ã®å Žåã«ããã©ãŒãã³ã¹ãåäžãããã ãã§ååã§ãã
Intel DAALã®Choleskyå解ã¢ã«ãŽãªãºã ãGoããã°ã©ã ã«çµ±åããã«ã¯ã次ã®ãã©ã«ããŒæ§é ãäœæããå¿ èŠããããŸãïŒ $ GOPATHãã£ã¬ã¯ããªã«ïŒã
cholesky`
âââ cholesky.go`
âââ cholesky.hxx`
âââ cholesky.cxx`
cholesky.goãã¡ã€ã«ã¯ãIntel DAALã©ã€ãã©ãªã®Choleskyå解ã¢ã«ãŽãªãºã ã䜿çšããGoããã°ã©ã ã§ãã cholesky.cxxããã³cholesky.hxxãã¡ã€ã«ã¯ãIntel DAALãå«ãC ++å®çŸ©/宣èšã§ããã䜿çšããIntel DAALæ©èœãcgoã³ã³ãã€ã©ã«äŒããŸãã ããããã«ã€ããŠèããŠã¿ãŸãããã
ãŸãã* .cxxãã¡ã€ã«ã
#include "cholesky.hxx" #include "daal.h" #include <iostream> using namespace daal; using namespace daal::algorithms; using namespace daal::data_management; using namespace daal::services; int choleskyDecompose(int dimension, double inputArray[]) { /* Create input numeric table from array */ SharedPtr inputData = SharedPtr(new Matrix(dimension, dimension, inputArray)); /* Create the algorithm object for computation of the Cholesky decomposition using the default method */ cholesky::Batch<> algorithm; /* Set input for the algorithm */ algorithm.input.set(cholesky::data, inputData); /* Compute Cholesky decomposition */ algorithm.compute(); /* Get pointer to Cholesky factor */ SharedPtr<Matrix > factor = staticPointerCast<Matrix, NumericTable>(algorithm.getResult()->get(cholesky::choleskyFactor)); /* Return the first element of the Cholesky factor */ return (*factor)[0][0]; }
* * .hxxãã¡ã€ã«ã
#ifndef CHOLESKY_H #define CHOLESKY_H // __cplusplus gets defined when a C++ compiler processes the file. // extern "C" is needed so the C++ compiler exports the symbols w/out name issues. #ifdef __cplusplus extern "C" { #endif int choleskyDecompose(int dimension, double inputArray[]); #ifdef __cplusplus } #endif #endif
ãããã®ãã¡ã€ã«ã¯ãCholesky Intel DAALå解ã¢ã«ãŽãªãºã ã䜿çšããŠå ¥åè¡åãå解ããCholeskyä¹æ°ã®æåã®èŠçŽ ãåºåããC ++ choleskyDecomposeã©ãããŒé¢æ°ãå®çŸ©ããŸãïŒIntel DAALå ¥éã¬ã€ãã®äŸã®ããã«ïŒã ãã®å Žåãå ¥åããŒã¿ã¯è¡åã®æ¬¡å ã®é·ãã®é åã§ããããšã«æ³šæããŠãã ããïŒã€ãŸãã3 x 3ã®è¡åã¯é·ã9ã®å ¥åé åã«å¯Ÿå¿ããŸãïŒã * .hxxãã¡ã€ã«ã«externâ Câãå«ããå¿ èŠããããŸãã ãã®å ŽåãC ++ã³ã³ãã€ã©ã¯ãC ++ãã¡ã€ã«ã§å®çŸ©ããã察å¿ããååããšã¯ã¹ããŒãããå¿ èŠãããããšããèªèãããŸãã
* .cxxããã³* .hxxãã¡ã€ã«ã§ã³ã¬ã¹ããŒå解ã®ã·ã§ã«é¢æ°ãå®çŸ©ããåŸããã®é¢æ°ãGoããçŽæ¥åŒã³åºãããšãã§ããŸãã cholesky.goã¯æ¬¡ã®ããã«ãªããŸãã
package main // #cgo CXXFLAGS: -I$DAALINCLUDE // #cgo LDFLAGS: -L$DAALLIB -ldaal_core -ldaal_sequential -lpthread -lm // #include "cholesky.hxx" import "C" import ( "fmt" "unsafe" ) func main() { // Define the input matrix as an array. inputArray := [9]float64{ 1.0, 2.0, 4.0, 2.0, 13.0, 23.0, 4.0, 23.0, 77.0, } // Get the first Cholesky decomposition factor. data := (*C.double)(unsafe.Pointer(&inputArray[0])) factor := C.choleskyDecompose(3, data) // Output the first Cholesky dcomposition factor to stdout. fmt.Printf("The first Cholesky decomp. factor is: %d\n", factor) }
ãã®ããã»ã¹ãã¹ãããããšã«èŠãŠãããã§äœãèµ·ãã£ãŠããã®ããç解ããŸãããã ãŸããããã°ã©ã ãã³ã³ãã€ã«ãããšãã«cgoã䜿çšããå¿ èŠãããããšãGoã«äŒããå¿ èŠããããŸãããŸããç¹å®ã®ãã©ã°ã䜿çšããŠã³ã³ãã€ã«ããå¿ èŠããããŸãã
// #cgo CXXFLAGS: -I$DAALINCLUDE // #cgo LDFLAGS: -L$DAALLIB -ldaal_core -ldaal_sequential -lpthread -lm // #include "cholesky.hxx" import "C"
䜿çšããã«ã¯ãã€ã³ããŒããCããå¿ èŠã§ããããã¯ãcgoã®äœ¿çšãå ±åããæ¬äŒŒããã±ãŒãžã§ãã ã€ã³ããŒãã³ãã³ããCãã®çŽåã«ã³ã¡ã³ããããå Žåããã®ã³ã¡ã³ãïŒããªã¢ã³ãã«ãšåŒã°ããïŒã¯ããã®ããã±ãŒãžã®C ++ã³ã³ããŒãã³ããã³ã³ãã€ã«ãããšãã«ããããŒãšããŠäœ¿çšãããŸãã
CXXFLAGSãšLDFLAGSã䜿çšããŠãã³ã³ãã€ã«æã«cgoã䜿çšããã³ã³ãã€ã«ãã©ã°ãšãªã³ã¯ãã©ã°ãæå®ãã// #includeâ cholesky.hxxâã䜿çšããŠC ++é¢æ°ãè¿œå ã§ããŸãã ãã®äŸãã³ã³ãã€ã«ããããã«ãé©åãªãã©ã°ã䜿çšããŠäžèšã®ããã«Linuxãšgccã䜿çšããŸããã ãã ãããã®ã¬ã€ãã«åŸã£ãŠãIntel DAALã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããã«ãããæ¹æ³ã決å®ã§ããŸãã
ãã®åŸãä»ã®ããã°ã©ã ãšåãæ¹æ³ã§Goã³ãŒããèšè¿°ãã C.choleskyDecomposeïŒïŒãšããŠã©ãããŒé¢æ°ã«ã¢ã¯ã»ã¹ã§ããŸãã
// Define the input matrix as an array. inputArray := [9]float64{ 1.0, 2.0, 4.0, 2.0, 13.0, 23.0, 4.0, 23.0, 77.0, } // Get the first Cholesky decomposition factor. data := (*C.double)(unsafe.Pointer(&inputArray[0])) factor := C.choleskyDecompose(3, data) // Output the first Cholesky dcomposition factor to stdout. fmt.Printf("The first Cholesky decomp. factor is: %d\n", factor)
ãã®å Žåã®ç¬èªã®æ©èœïŒcgoã®äœ¿çšã«ããïŒã¯ãé¢æ°ã®float64ã¹ã©ã€ã¹ã®æåã®èŠçŽ ãžã®ãã€ã³ã¿ãŒãå®å šã§ãªããã€ã³ã¿ãŒã«å€æããå¿ èŠãããããšã§ãã choleskyDecomposeã å®å šã§ãªããã€ã³ã¿ãŒã«ããã¯ãããšãGoããã°ã©ã ã§æå¹ãªã¿ã€ãã»ãŒããã£ã®å¶éãåé¿ã§ããŸãã
ãããïŒ ãã®ãããIntel DAALã©ã€ãã©ãªã®Choleskyå解ã¢ã«ãŽãªãºã ãšåŒã°ããGoããã°ã©ã ããããŸãã 次ã¯ããã®ããã°ã©ã ããã«ãããŠå®è¡ããŸãã ããã¯ãgo buildã䜿çšããŠéåžžã®æ¹æ³ã§å®è¡ã§ããŸãã
$ ls cholesky.cxx cholesky.go cholesky.hxx $ go build $ ls cholesky cholesky.cxx cholesky.go cholesky.hxx $ ./cholesky The first Cholesky decomp. factor is: 1 $
ãããŠçµæã¯æºåãã§ããŠããŸãïŒ ãã¡ãããã³ã¬ã¹ããŒã®å解ã®æåã®ä¹æ°ã¯1ã§ããIntelDAALã©ã€ãã©ãªãGoããçŽæ¥äœ¿çšããããšã«æåããŸããã ããããGoããã°ã©ã ã¯å®å šã§ã¯ãªããã€ã³ã¿ãŒãšCã³ãŒãã®æçã§ããªãå¥åŠã«èŠããŸãããããã¯1åéãã®ãœãªã¥ãŒã·ã§ã³ã§ãã 次ã«ãä»ã®Goããã±ãŒãžãšåãæ¹æ³ã§ã€ã³ããŒãã§ãããåå©çšå¯èœãªGoããã±ãŒãžãšåãæ©èœãå®è£ ããŠã¿ãŸãããã
Intel DAALã§åå©çšå¯èœãªGoããã±ãŒãžãäœæãã
Intel DAALæ©èœãå«ãGoããã±ãŒãžãäœæããã«ã¯ã SWIGããã°ã©ã ã䜿çšããŸãã Goã§ã¯ãcgoã®äœ¿çšã«å ããŠãã¢ã»ã³ããªäžã«SWIGãåŒã³åºããŠãC / C ++æ©èœãå®è£ ããGoããã±ãŒãžãã³ã³ãã€ã«ã§ããŸãã ãã®ãããªã¢ã»ã³ããªã®å Žåã次ã®ãã©ã«ããŒæ§é ãäœæããå¿ èŠããããŸãã
choleskylib
âââ cholesky.go
âââ cholesky.hxx
âââ cholesky.cxx
âââ cholesky.swigcxx
ãã®å Žåã* .cxxããã³* .hxxã·ã§ã«ãã¡ã€ã«ã¯åããŸãŸã§ãã ãã ãã* .swigcxxãã¡ã€ã«ãè¿œå ããå¿ èŠããããŸãã ãã®ãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
%{ #include "cholesky.hxx" %} %include "cholesky.hxx"
SWIGããã°ã©ã ã¯ãã³ã¬ã¹ããŒå解é¢æ°ã®ã©ãããŒã³ãŒããäœæããŸããããã«ããããã®ã³ãŒããGoããã±ãŒãžãšããŠäœ¿çšã§ããŸãã
ããã«ãïŒã¹ã¿ã³ãã¢ãã³ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãªãïŒåå©çšå¯èœãªGoããã±ãŒãžãäœæããããã* .goãã¡ã€ã«ã«ã¯ããã±ãŒãžmainãŸãã¯é¢æ°mainãå«ãŸããªãå ŽåããããŸãã ããã±ãŒãžã®ååã決å®ããã ãã§ãã ãã®å Žåããããã³ã¬ã¹ããŒãšåŒã³ãŸãããã ããã§cholesky.goã¯æ¬¡ã®ããã«ãªããŸãã
package cholesky // #cgo CXXFLAGS: -I$DAALINCLUDE // #cgo LDFLAGS: -L$DAALLIB -ldaal_core -ldaal_sequential -lpthread -lm import "C"
ïŒåã³ãããããŒã§ãã¡ã€ã«ãæå®ããŸããïŒ
ããã§ãããã±ãŒãžããã«ãããŠããŒã«ã«ã«ã€ã³ã¹ããŒã«ã§ããŸãã
$ ls cholesky.cxx cholesky.go cholesky.hxx cholesky.swigcxx $ go install $
ãã®ã³ãã³ãã¯ããã®ããã±ãŒãžã䜿çšããŠGoããã°ã©ã ãã¢ã¯ã»ã¹ããå¿ èŠãªãã¹ãŠã®ãã€ããªãšã©ã€ãã©ãªãã³ã³ãã€ã«ããŸãã ãã©ã«ããŒã«* .swigcxxãã¡ã€ã«ãããããšãã確èªãããSWIGã䜿çšããŠããã±ãŒãžããã«ãããŸãã
ãããïŒ ããã§ãIntel DAALã䜿çšããGoããã±ãŒãžãã§ããŸããã ããã±ãŒãžã®ã€ã³ããŒããšäœ¿çšã®ä»çµã¿ãèŠãŠã¿ãŸãããã
package main import ( "fmt" "github.com/dwhitena/daal-go/choleskylib" ) func main() { // Define the input matrix as an array. inputArray := [9]float64{ 1.0, 2.0, 4.0, 2.0, 13.0, 23.0, 4.0, 23.0, 77.0, } // Get the first Cholesky decomposition factor. factor := cholesky.CholeskyDecompose(3, &inputArray[0]) // Output the first Cholesky dcomposition factor to stdout. fmt.Printf("The first Cholesky decomp. factor is: %d\n", factor) }
ã¯ã©ã¹ïŒ ãã®ã³ãŒãã¯ãIntel DAALãçŽæ¥äœ¿çšããããããã£ãšãããã§ãã ä»ã®Goããã±ãŒãžãšåæ§ã«ãCholeskyã¢ã«ãŽãªãºã ããã±ãŒãžãã€ã³ããŒãããã©ãããããé¢æ°ãcholesky.CholeskyDecomposeïŒ...ïŒãšããŠåŒã³åºãããšãã§ããŸã ã ããã«ãå®å šã§ãªãã³ã³ããŒãã³ãã¯ãã¹ãŠSWIGã§èªåçã«åŠçãããŸããã ããã§ãå ã®float64ã¹ã©ã€ã¹ã®æåã®èŠçŽ ã®ã¢ãã¬ã¹ãcholesky.CholeskyDecomposeïŒ...ïŒã«æž¡ãããšãã§ããŸãã
ãã®ããã°ã©ã ã¯ãä»ã®Goããã°ã©ã ãšåæ§ã«ãgo buildã³ãã³ãã§ã³ã³ãã€ã«ããã³å®è¡ã§ããŸãã
$ ls main.go $ go build $ ls example main.go $ ./example The first Cholesky decomp. factor is: 1 $
ãã£ãïŒ ãã¹ãŠæ£ããã§ãã ã³ã¬ã¹ããŒå解ã¢ã«ãŽãªãºã ãå¿ èŠãªå Žåãä»ã®Goããã°ã©ã ã§ãã®ããã±ãŒãžã䜿çšã§ããŸãã
çµè«ãšãªãœãŒã¹
Intel DAALãcgoãSWIGã䜿çšããŠãæé©åãããCholeskyå解ã¢ã«ãŽãªãºã ãGoããã°ã©ã ã«çµ±åããããšãã§ããŸããã ãã¡ãããå¯èœæ§ã¯ãã®ã¢ã«ãŽãªãºã ã ãã«éå®ãããŸããã åæ§ã«ãIntel DAALã«å®è£ ãããŠããä»»æã®ã¢ã«ãŽãªãºã ã䜿çšããããã°ã©ã ãšããã±ãŒãžãGoã§äœæã§ããŸãã Goã¢ããªã±ãŒã·ã§ã³ã§ãããããã€ã³ã¿ã©ã¯ãã£ããããã³åæ£åŠçãã¯ã©ã¹ã¿ãªã³ã°ãã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãã³ãã£ã«ã¿ãªã³ã°ãªã©ã®æ©èœã䜿çšããŠããã¥ãŒã©ã«ãããã¯ãŒã¯ãçŽæ¥äœæã§ããŸãã
äžèšã§äœ¿çšãããã¹ãŠã®ã³ãŒãã¯ã ããããå ¥æã§ããŸã ã
Goããã°ã©ãã³ã°ãªãœãŒã¹
- Slackã§Gophersã«åå ããããã°ããŒã¿ãããŒã¿åæãæ©æ¢°åŠç¿ãããã³Goã䜿çšããä»ã®åæ§ã®ãœãªã¥ãŒã·ã§ã³ã«é¢äžããŠããïŒããŒã¿ãµã€ãšã³ã¹ãã£ãã«ã®ä»ã®ã¡ã³ããŒãšè©±ããŸãã
- GopherDataçµç¹ã®ãŠã§ããµã€ãã«ã¢ã¯ã»ã¹ã㊠ããŠãŒã¶ãŒãããŒã¿ç®¡çãåŠçãåæãæ©æ¢°åŠç¿ãããã³GoèŠèŠåããŒã«ã®éçºè ãšããåãããŸãã
- Twitterã§GopherDataããã©ããŒããŠãã ãã ã
- å¢ãç¶ããGoã®ããŒã«ã®ãªã¹ãã䜿çšïŒããã³è£å ïŒããŸãã
DAALãªãœãŒã¹
- Intel DAALã®ããã¥ã¡ã³ããã芧ãã ããã
- ãã¬ãŒãã³ã°è³æã䜿çšããŸã ã
- Intel DAALãã©ãŒã©ã ã«åå ããŠãã ããã
èè ã«ã€ããŠ
ãããšã«ïŒ@dwhitenaïŒã¯ãçµéšè±å¯ãªããŒã¿ç 究è ã§ããå士å·ã§ãPachydermïŒ@pachydermIOïŒã§åããŠããŸãã 圌ã¯ãäºæž¬ã¢ãã«ãããŒã¿ã®èŠèŠåãçµ±èšåæãªã©ã®æ©èœãå«ãææ°ã®åæ£ããŒã¿ãã€ãã©ã€ã³ãéçºããŠããŸãã 圌ã¯äžçäžã®äŒè°ïŒODSCãSpark SummitãDatapaloozaãDevFest SiberiaãGopherCon b lheubtïŒã§è¬æŒããArdan LabsïŒ@ardanlabsïŒã§ããŒã¿ã®èª¿æ»ãšåæãæããJupyterã®Goã³ã¢ããµããŒãããããŸããŸãªãããžã§ã¯ãã®éçºã«ç©æ¥µçã«é¢äžããŠããŸããªãŒãã³ãœãŒã¹ã®ããŒã¿ãã€ãã³ã°ã