diff --git a/src/main/kotlin/analyzer/ScalpingAnalyzer.kt b/src/main/kotlin/analyzer/ScalpingAnalyzer.kt index 408cd84..fedb886 100644 --- a/src/main/kotlin/analyzer/ScalpingAnalyzer.kt +++ b/src/main/kotlin/analyzer/ScalpingAnalyzer.kt @@ -1,5 +1,6 @@ package analyzer +import kotlinx.serialization.Serializable import model.CandleData import service.Candle import java.time.LocalDateTime @@ -7,6 +8,7 @@ import java.time.ZoneId import java.time.format.DateTimeFormatter import kotlin.math.* +@Serializable data class ScalpingSignalModel( val currentPrice: Double, val buySignal: Boolean, diff --git a/src/main/kotlin/network/RagService.kt b/src/main/kotlin/network/RagService.kt index 90dcab6..50e3b93 100644 --- a/src/main/kotlin/network/RagService.kt +++ b/src/main/kotlin/network/RagService.kt @@ -7,6 +7,7 @@ import analyzer.FinancialAnalyzer import analyzer.FinancialMapper import analyzer.FinancialStatement import analyzer.InvestmentScores +import analyzer.ScalpingSignalModel import analyzer.TechnicalAnalyzer import dev.langchain4j.community.rag.content.retriever.lucene.LuceneEmbeddingStore import dev.langchain4j.data.document.Metadata @@ -248,9 +249,9 @@ object RagService { val techStartTime = System.currentTimeMillis() val financialScore = FinancialAnalyzer.calculateScore(financialStmt) val scores = technicalAnalyzer.calculateScores(financialScore) - val techSignal = technicalAnalyzer.generateComprehensiveSignal() + tradingDecision.signalModel = technicalAnalyzer.generateComprehensiveSignal() val techDuration = System.currentTimeMillis() - techStartTime - println("techSignal.compositeScore ${techSignal.compositeScore}") + println("techSignal.compositeScore ${tradingDecision.signalModel}") if (!FinancialAnalyzer.isSafetyBeltMet(financialStmt)) { logTime(stockName, "재무 미달 조기 종료", finDuration, System.currentTimeMillis() - totalStartTime) @@ -258,7 +259,7 @@ object RagService { return@coroutineScope } - if (techSignal.compositeScore < 50) { + if ((tradingDecision.signalModel?.compositeScore ?: 0) < 50) { logTime(stockName, "기술 점수 미달 조기 종료", techDuration, System.currentTimeMillis() - totalStartTime) result(tradingDecision.apply { decision = "HOLD"; reason = "매수 타점 미도달" }, false) return@coroutineScope @@ -282,7 +283,9 @@ object RagService { ) // 3. 검색된 내용을 하나의 문자열로 합쳐서 전달 - tradingDecision.newsContext = finalSearchResult.matches().joinToString("\n\n") { + tradingDecision.newsContext = finalSearchResult.matches().distinct() // 중복 제거 + .take(4) // 10개에서 4개로 축소 + .joinToString("\n\n") { it.embedded().text() } @@ -431,8 +434,7 @@ object RagService { // 1-2. 기술 분석 및 리포트 생성 시간 측정 val techStartTime = System.currentTimeMillis() - val techSignal = tempDecision.analyzer?.generateComprehensiveSignal() - val techScore100 = techSignal?.compositeScore?.toDouble() ?: 0.0 + val techScore100 = tempDecision.signalModel?.compositeScore?.toDouble() ?: 0.0 val isOverheated = tempDecision.analyzer?.isOverheatedStock() ?: false tempDecision.techSummary = tempDecision.analyzer?.generateComprehensiveReport(finScore100.toInt()) val techDuration = System.currentTimeMillis() - techStartTime @@ -611,6 +613,7 @@ class TradingDecision { var newsContext : String? = null var financialData : String? = null var analyzer : TechnicalAnalyzer? = null + var signalModel : ScalpingSignalModel? = null fun shortPossible() = listOf(ultraShortScore, diff --git a/src/main/kotlin/service/AutoTradingManager.kt b/src/main/kotlin/service/AutoTradingManager.kt index e234c8a..ec5f702 100644 --- a/src/main/kotlin/service/AutoTradingManager.kt +++ b/src/main/kotlin/service/AutoTradingManager.kt @@ -102,93 +102,119 @@ object AutoTradingManager { } } - val globalCallback = { completeTradingDecision: TradingDecision?, isSuccess: Boolean -> - if (isSuccess && completeTradingDecision != null) { - // 1. 로그 저장소에 기록 (UI에서 이걸 읽음) - TradingLogStore.addLog(completeTradingDecision) +// val globalCallback = { completeTradingDecision: TradingDecision?, isSuccess: Boolean -> +// if (isSuccess && completeTradingDecision != null) { +// // 1. 로그 저장소에 기록 (UI에서 이걸 읽음) +// TradingLogStore.addLog(completeTradingDecision) +// +// println("🚀 [자동매수 실행] ${completeTradingDecision.stockName}") +// if (completeTradingDecision.confidence < 10) { +// addToReanalysis(RankingStock(mksc_shrn_iscd = completeTradingDecision.stockCode,hts_kor_isnm = completeTradingDecision.stockName)) +// TradingLogStore.addLog(completeTradingDecision,"RETRY","분석 신뢰도 오류 인지로 재분석 대기열에 추가") +// }else if (completeTradingDecision != null && !completeTradingDecision.stockCode.isNullOrEmpty()) { +// var basePrice = completeTradingDecision.currentPrice +// var stockCode = completeTradingDecision.stockCode +// println("basePrice $basePrice") +// val minScore = KisSession.config.getValues(ConfigIndex.MIN_PURCHASE_SCORE_INDEX) +// var maxBudget = KisSession.config.getValues(ConfigIndex.MAX_BUDGET_INDEX) +// val buyWeight = KisSession.config.getValues(ConfigIndex.BUY_WEIGHT_INDEX) +// val baseProfit = KisSession.config.getValues(ConfigIndex.PROFIT_INDEX) +// +// fun resultCheck(completeTradingDecision :TradingDecision) { +// val weights = mapOf( +// "short" to 0.2, // 초단기 점수가 낮아도 전체에 미치는 영향 감소 +// "profit" to 0.4, +// "safe" to 0.4 // 중장기 점수 비중 강화 +// ) +// +// val totalScore = +// ((completeTradingDecision.shortPossible() + append) * weights["short"]!!) + +// ((completeTradingDecision.profitPossible() + append) * weights["profit"]!!) + +// ((completeTradingDecision.safePossible() + append) * weights["safe"]!!) +// +// if (totalScore >= minScore && completeTradingDecision.confidence >= MIN_CONFIDENCE) { +// var investmentGrade = completeTradingDecision.investmentGrade ?: InvestmentGrade.LEVEL_1_SPECULATIVE +// +// val finalMargin = baseProfit * KisSession.config.getValues(investmentGrade.profitGuide) +// println("🚀 [매수 진행] 토탈 스코어: ${String.format("%.1f", totalScore)} -> 종목: ${completeTradingDecision.stockCode}") +// +// // basePrice(현재가 혹은 지정가)를 기준으로 매수 가능 수량 산출 (최소 1주 보장) +// val gradeRate = KisSession.config.getValues(investmentGrade.allocationRate) +// val maxQty = (KisSession.config.getValues(ConfigIndex.MAX_COUNT_INDEX) * gradeRate).roundToInt() +// maxBudget = maxBudget * gradeRate +// val calculatedQty = if (basePrice > 0) { +// (maxBudget / basePrice).toInt().coerceAtLeast(1) +// } else { +// 1 +// } +// // 5. 매수 실행 (계산된 finalMargin 전달) +// excuteTrade( +// decision = completeTradingDecision, +// orderQty = min(calculatedQty, maxQty).toString(), +// profitRate1 = finalMargin, +// investmentGrade = investmentGrade, +// ) +// +// } else if(totalScore >= (minScore * 0.9) && completeTradingDecision.confidence + append >= (MIN_CONFIDENCE * 0.9)) { +// addToReanalysis(RankingStock(mksc_shrn_iscd = completeTradingDecision.stockCode,hts_kor_isnm = completeTradingDecision.stockName)) +// TradingLogStore.addLog(completeTradingDecision,"RETRY","✋ [관망] 토탈 스코어[$totalScore] 또는 신뢰도[${completeTradingDecision.confidence}] 미달 이나 약간의 오차로 재분석 대기열에 추가") +// } else { +// TradingLogStore.addLog(completeTradingDecision,"HOLD","✋ [관망] 토탈 스코어(${String.format("%.1f[${minScore}]", totalScore)}) 또는 신뢰도 (${String.format("%.1f[${MIN_CONFIDENCE}]", completeTradingDecision.confidence)}) 미달") +// } +// } +// if (completeTradingDecision?.decision?.contains("매수") == true) { +// completeTradingDecision.decision = "BUY" +// } +// when (completeTradingDecision?.decision) { +// "BUY","매수" -> { +// append = buyWeight +// TradingLogStore.addLog(completeTradingDecision,"BUY","[$stockCode] 매수 추천 : ${completeTradingDecision?.reason}") +// resultCheck(completeTradingDecision) +// } +// "SELL" -> { +// TradingLogStore.addLog(completeTradingDecision,"SELL","[$stockCode] 매도 추천 : ${completeTradingDecision?.reason}") +// println("[$stockCode] 매도: ${completeTradingDecision?.reason}") +// } +// "HOLD" -> { +// append = 0.0 +// TradingLogStore.addLog(completeTradingDecision,"HOLD","[$stockCode] 관망 유지 : ${completeTradingDecision?.reason}") +// resultCheck(completeTradingDecision) +// } +// else -> { +// append = 0.0 +// println("[$stockCode] ${completeTradingDecision?.decision} : ${completeTradingDecision?.reason}") +// } +// } +// } +// } +// } +val globalCallback = { completeTradingDecision: TradingDecision?, isSuccess: Boolean -> + if (isSuccess && completeTradingDecision != null) { + val decision = completeTradingDecision - println("🚀 [자동매수 실행] ${completeTradingDecision.stockName}") - if (completeTradingDecision.confidence < 10) { - addToReanalysis(RankingStock(mksc_shrn_iscd = completeTradingDecision.stockCode,hts_kor_isnm = completeTradingDecision.stockName)) - TradingLogStore.addLog(completeTradingDecision,"RETRY","분석 신뢰도 오류 인지로 재분석 대기열에 추가") - }else if (completeTradingDecision != null && !completeTradingDecision.stockCode.isNullOrEmpty()) { - var basePrice = completeTradingDecision.currentPrice - var stockCode = completeTradingDecision.stockCode - println("basePrice $basePrice") - val minScore = KisSession.config.getValues(ConfigIndex.MIN_PURCHASE_SCORE_INDEX) - var maxBudget = KisSession.config.getValues(ConfigIndex.MAX_BUDGET_INDEX) - val buyWeight = KisSession.config.getValues(ConfigIndex.BUY_WEIGHT_INDEX) - val baseProfit = KisSession.config.getValues(ConfigIndex.PROFIT_INDEX) + // 1. 이미 AI가 결정한 decision과 confidence를 신뢰함 + if (decision.decision == "BUY") { + val minScore = KisSession.config.getValues(ConfigIndex.MIN_PURCHASE_SCORE_INDEX) - fun resultCheck(completeTradingDecision :TradingDecision) { - val weights = mapOf( - "short" to 0.2, // 초단기 점수가 낮아도 전체에 미치는 영향 감소 - "profit" to 0.4, - "safe" to 0.4 // 중장기 점수 비중 강화 - ) + // AI가 이미 검증한 등급을 사용 (재계산 불필요) + val grade = decision.investmentGrade ?: InvestmentGrade.LEVEL_1_SPECULATIVE - val totalScore = - ((completeTradingDecision.shortPossible() + append) * weights["short"]!!) + - ((completeTradingDecision.profitPossible() + append) * weights["profit"]!!) + - ((completeTradingDecision.safePossible() + append) * weights["safe"]!!) + // 2. 최종 매수 실행 + val gradeRate = KisSession.config.getValues(grade.allocationRate) + val maxBudget = KisSession.config.getValues(ConfigIndex.MAX_BUDGET_INDEX) * gradeRate + val calculatedQty = (maxBudget / decision.currentPrice).toInt().coerceAtLeast(1) - if (totalScore >= minScore && completeTradingDecision.confidence >= MIN_CONFIDENCE) { - var investmentGrade = completeTradingDecision.investmentGrade ?: InvestmentGrade.LEVEL_1_SPECULATIVE - - val finalMargin = baseProfit * KisSession.config.getValues(investmentGrade.profitGuide) - println("🚀 [매수 진행] 토탈 스코어: ${String.format("%.1f", totalScore)} -> 종목: ${completeTradingDecision.stockCode}") - - // basePrice(현재가 혹은 지정가)를 기준으로 매수 가능 수량 산출 (최소 1주 보장) - val gradeRate = KisSession.config.getValues(investmentGrade.allocationRate) - val maxQty = (KisSession.config.getValues(ConfigIndex.MAX_COUNT_INDEX) * gradeRate).roundToInt() - maxBudget = maxBudget * gradeRate - val calculatedQty = if (basePrice > 0) { - (maxBudget / basePrice).toInt().coerceAtLeast(1) - } else { - 1 - } - // 5. 매수 실행 (계산된 finalMargin 전달) - excuteTrade( - decision = completeTradingDecision, - orderQty = min(calculatedQty, maxQty).toString(), - profitRate1 = finalMargin, - investmentGrade = investmentGrade, - ) - - } else if(totalScore >= (minScore * 0.9) && completeTradingDecision.confidence + append >= (MIN_CONFIDENCE * 0.9)) { - addToReanalysis(RankingStock(mksc_shrn_iscd = completeTradingDecision.stockCode,hts_kor_isnm = completeTradingDecision.stockName)) - TradingLogStore.addLog(completeTradingDecision,"RETRY","✋ [관망] 토탈 스코어[$totalScore] 또는 신뢰도[${completeTradingDecision.confidence}] 미달 이나 약간의 오차로 재분석 대기열에 추가") - } else { - TradingLogStore.addLog(completeTradingDecision,"HOLD","✋ [관망] 토탈 스코어(${String.format("%.1f[${minScore}]", totalScore)}) 또는 신뢰도 (${String.format("%.1f[${MIN_CONFIDENCE}]", completeTradingDecision.confidence)}) 미달") - } - } - if (completeTradingDecision?.decision?.contains("매수") == true) { - completeTradingDecision.decision = "BUY" - } - when (completeTradingDecision?.decision) { - "BUY","매수" -> { - append = buyWeight - TradingLogStore.addLog(completeTradingDecision,"BUY","[$stockCode] 매수 추천 : ${completeTradingDecision?.reason}") - resultCheck(completeTradingDecision) - } - "SELL" -> { - TradingLogStore.addLog(completeTradingDecision,"SELL","[$stockCode] 매도 추천 : ${completeTradingDecision?.reason}") - println("[$stockCode] 매도: ${completeTradingDecision?.reason}") - } - "HOLD" -> { - append = 0.0 - TradingLogStore.addLog(completeTradingDecision,"HOLD","[$stockCode] 관망 유지 : ${completeTradingDecision?.reason}") - resultCheck(completeTradingDecision) - } - else -> { - append = 0.0 - println("[$stockCode] ${completeTradingDecision?.decision} : ${completeTradingDecision?.reason}") - } - } - } + excuteTrade( + decision = decision, + orderQty = calculatedQty.toString(), + profitRate1 = KisSession.config.getValues(ConfigIndex.PROFIT_INDEX) * KisSession.config.getValues(grade.profitGuide), + investmentGrade = grade + ) + } else if (decision.confidence >= 60.0) { // 아까운 종목만 재분석 + addToReanalysis(RankingStock(decision.stockCode, decision.stockName)) } } - +} val MIN_CONFIDENCE = 60.0 // 최소 신뢰도 var append = 0.0 diff --git a/src/main/kotlin/service/LlamaServerManager.kt b/src/main/kotlin/service/LlamaServerManager.kt index 477e05b..315d082 100644 --- a/src/main/kotlin/service/LlamaServerManager.kt +++ b/src/main/kotlin/service/LlamaServerManager.kt @@ -83,12 +83,12 @@ object LlamaServerManager { val cpuCores = Runtime.getRuntime().availableProcessors() // HardwareDetector.getCpuCores()와 동일 val hasGpu = HardwareDetector.hasNvidiaGpu() val ratio = if (isWin) 0.5 else 0.7 - val optimalThreads = (cpuCores * ratio).toInt().coerceIn(4, 16) + val optimalThreads = if(isWin)(cpuCores * ratio).toInt().coerceIn(4, 12) else (cpuCores * ratio).toInt().coerceIn(4, 16) - var optimalGpuLayers = if ((isWin && hasGpu) || isMacArm) 99 else 4 - if(HardwareDetector.getCpuName().contains("i7")) { - optimalGpuLayers = 0 - } + var optimalGpuLayers = 99 //if ((isWin && hasGpu) || isMacArm) 99 else 4 +// if(HardwareDetector.getCpuName().contains("i7")) { +// optimalGpuLayers = 0 +// } println("🖥️ OS: $os / Arch: $arch") println("⚙️ 할당 스레드: $optimalThreads (Core: $cpuCores, Ratio: $ratio)") println("🚀 GPU 레이어: $optimalGpuLayers (NVIDIA/MacArm: ${if(optimalGpuLayers == 99) "YES" else "NO"})") @@ -97,12 +97,14 @@ object LlamaServerManager { binPath, "-m", modelPath, "--port", port.toString(), - "-c", if (port == EMBEDDING_PORT) "512" else "8192", + "-c", if (port == EMBEDDING_PORT) "2048" else "8192", "-ngl", optimalGpuLayers.toString(), "-t", optimalThreads.toString(), "--embedding", "--mlock", // RAM 고정으로 스왑 방지 - "--no-mmap" + "--no-mmap", + + ) if (port != EMBEDDING_PORT) { // 텍스트 생성용 모델에만 적용 command.addAll(listOf( @@ -112,6 +114,11 @@ object LlamaServerManager { "--cont-batching" )) } + if (isWin) { + command.addAll(listOf( + "--numa", "distribute" + )) + } scope.launch { try { val pb = ProcessBuilder(command) diff --git a/src/main/resources/bin/win-x64-n/dnnl.dll b/src/main/resources/bin/win-x64-n/dnnl.dll new file mode 100644 index 0000000..b17cebf Binary files /dev/null and b/src/main/resources/bin/win-x64-n/dnnl.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-base.dll b/src/main/resources/bin/win-x64-n/ggml-base.dll index 0bc4978..766443d 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-base.dll and b/src/main/resources/bin/win-x64-n/ggml-base.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-alderlake.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-alderlake.dll index 5427479..ff1af20 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-alderlake.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-alderlake.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-cannonlake.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-cannonlake.dll index b56aa68..4fed994 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-cannonlake.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-cannonlake.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-cascadelake.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-cascadelake.dll index 705bfa0..d643474 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-cascadelake.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-cascadelake.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-cooperlake.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-cooperlake.dll index c9c48dd..9f393dd 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-cooperlake.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-cooperlake.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-haswell.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-haswell.dll index 08a1fbf..3b4baf3 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-haswell.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-haswell.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-icelake.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-icelake.dll index f06a026..1871151 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-icelake.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-icelake.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-ivybridge.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-ivybridge.dll index 51a7b7c..053e7d6 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-ivybridge.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-ivybridge.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-piledriver.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-piledriver.dll index 5ca7413..275e2ff 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-piledriver.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-piledriver.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-sandybridge.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-sandybridge.dll index 446fb11..74d9561 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-sandybridge.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-sandybridge.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-sapphirerapids.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-sapphirerapids.dll index 6d3b236..c86c201 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-sapphirerapids.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-sapphirerapids.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-skylakex.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-skylakex.dll index b875058..80f61d4 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-skylakex.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-skylakex.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-sse42.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-sse42.dll index 6ffd09d..9a45a6c 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-sse42.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-sse42.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-x64.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-x64.dll index 8463f6e..8a68763 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-x64.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-x64.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-cpu-zen4.dll b/src/main/resources/bin/win-x64-n/ggml-cpu-zen4.dll index 552f0b5..e9dcac2 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-cpu-zen4.dll and b/src/main/resources/bin/win-x64-n/ggml-cpu-zen4.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-rpc.dll b/src/main/resources/bin/win-x64-n/ggml-rpc.dll index b6c22da..6f00acf 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml-rpc.dll and b/src/main/resources/bin/win-x64-n/ggml-rpc.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml-sycl.dll b/src/main/resources/bin/win-x64-n/ggml-sycl.dll new file mode 100644 index 0000000..dd3896b Binary files /dev/null and b/src/main/resources/bin/win-x64-n/ggml-sycl.dll differ diff --git a/src/main/resources/bin/win-x64-n/ggml.dll b/src/main/resources/bin/win-x64-n/ggml.dll index c804575..1273985 100644 Binary files a/src/main/resources/bin/win-x64-n/ggml.dll and b/src/main/resources/bin/win-x64-n/ggml.dll differ diff --git a/src/main/resources/bin/win-x64-n/libhwloc-15.dll b/src/main/resources/bin/win-x64-n/libhwloc-15.dll new file mode 100644 index 0000000..63c0a97 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/libhwloc-15.dll differ diff --git a/src/main/resources/bin/win-x64-n/libiomp5md.dll b/src/main/resources/bin/win-x64-n/libiomp5md.dll new file mode 100644 index 0000000..0d73294 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/libiomp5md.dll differ diff --git a/src/main/resources/bin/win-x64-n/libmmd.dll b/src/main/resources/bin/win-x64-n/libmmd.dll new file mode 100644 index 0000000..7d745c3 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/libmmd.dll differ diff --git a/src/main/resources/bin/win-x64-n/libsycl-fallback-bfloat16.spv b/src/main/resources/bin/win-x64-n/libsycl-fallback-bfloat16.spv new file mode 100644 index 0000000..5cdc3bb Binary files /dev/null and b/src/main/resources/bin/win-x64-n/libsycl-fallback-bfloat16.spv differ diff --git a/src/main/resources/bin/win-x64-n/libsycl-native-bfloat16.spv b/src/main/resources/bin/win-x64-n/libsycl-native-bfloat16.spv new file mode 100644 index 0000000..c70be95 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/libsycl-native-bfloat16.spv differ diff --git a/src/main/resources/bin/win-x64-n/llama-batched-bench.exe b/src/main/resources/bin/win-x64-n/llama-batched-bench.exe index 26b92a3..bc50f18 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-batched-bench.exe and b/src/main/resources/bin/win-x64-n/llama-batched-bench.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-bench.exe b/src/main/resources/bin/win-x64-n/llama-bench.exe index 03d1077..398a2eb 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-bench.exe and b/src/main/resources/bin/win-x64-n/llama-bench.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-cli.exe b/src/main/resources/bin/win-x64-n/llama-cli.exe index 998b9fb..8d7951e 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-cli.exe and b/src/main/resources/bin/win-x64-n/llama-cli.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-completion.exe b/src/main/resources/bin/win-x64-n/llama-completion.exe index 2b15cdc..913d334 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-completion.exe and b/src/main/resources/bin/win-x64-n/llama-completion.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-fit-params.exe b/src/main/resources/bin/win-x64-n/llama-fit-params.exe index 7a16b2a..fba6b43 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-fit-params.exe and b/src/main/resources/bin/win-x64-n/llama-fit-params.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-gemma3-cli.exe b/src/main/resources/bin/win-x64-n/llama-gemma3-cli.exe index 369c724..9d02c3e 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-gemma3-cli.exe and b/src/main/resources/bin/win-x64-n/llama-gemma3-cli.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-gguf-split.exe b/src/main/resources/bin/win-x64-n/llama-gguf-split.exe index 6439de2..c54d5f5 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-gguf-split.exe and b/src/main/resources/bin/win-x64-n/llama-gguf-split.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-imatrix.exe b/src/main/resources/bin/win-x64-n/llama-imatrix.exe index ba66b98..ecd4ab9 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-imatrix.exe and b/src/main/resources/bin/win-x64-n/llama-imatrix.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-llava-cli.exe b/src/main/resources/bin/win-x64-n/llama-llava-cli.exe index 369c724..9d02c3e 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-llava-cli.exe and b/src/main/resources/bin/win-x64-n/llama-llava-cli.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-minicpmv-cli.exe b/src/main/resources/bin/win-x64-n/llama-minicpmv-cli.exe index 369c724..9d02c3e 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-minicpmv-cli.exe and b/src/main/resources/bin/win-x64-n/llama-minicpmv-cli.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-mtmd-cli.exe b/src/main/resources/bin/win-x64-n/llama-mtmd-cli.exe index ee3b969..380f55e 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-mtmd-cli.exe and b/src/main/resources/bin/win-x64-n/llama-mtmd-cli.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-mtmd-debug.exe b/src/main/resources/bin/win-x64-n/llama-mtmd-debug.exe index 157f2b1..ab0308d 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-mtmd-debug.exe and b/src/main/resources/bin/win-x64-n/llama-mtmd-debug.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-perplexity.exe b/src/main/resources/bin/win-x64-n/llama-perplexity.exe index 461360a..d6b1fa0 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-perplexity.exe and b/src/main/resources/bin/win-x64-n/llama-perplexity.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-quantize.exe b/src/main/resources/bin/win-x64-n/llama-quantize.exe index 95aa6bd..092561c 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-quantize.exe and b/src/main/resources/bin/win-x64-n/llama-quantize.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-qwen2vl-cli.exe b/src/main/resources/bin/win-x64-n/llama-qwen2vl-cli.exe index 369c724..9d02c3e 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-qwen2vl-cli.exe and b/src/main/resources/bin/win-x64-n/llama-qwen2vl-cli.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-results.exe b/src/main/resources/bin/win-x64-n/llama-results.exe index 3b8cb73..ec333a1 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-results.exe and b/src/main/resources/bin/win-x64-n/llama-results.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-server.exe b/src/main/resources/bin/win-x64-n/llama-server.exe index c592a15..8d10520 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-server.exe and b/src/main/resources/bin/win-x64-n/llama-server.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-template-analysis.exe b/src/main/resources/bin/win-x64-n/llama-template-analysis.exe index 42a9979..7cab04f 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-template-analysis.exe and b/src/main/resources/bin/win-x64-n/llama-template-analysis.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-tokenize.exe b/src/main/resources/bin/win-x64-n/llama-tokenize.exe index 4110673..47a9259 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-tokenize.exe and b/src/main/resources/bin/win-x64-n/llama-tokenize.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama-tts.exe b/src/main/resources/bin/win-x64-n/llama-tts.exe index d9b055b..be9e2a0 100644 Binary files a/src/main/resources/bin/win-x64-n/llama-tts.exe and b/src/main/resources/bin/win-x64-n/llama-tts.exe differ diff --git a/src/main/resources/bin/win-x64-n/llama.dll b/src/main/resources/bin/win-x64-n/llama.dll index 808ad92..3dd84a8 100644 Binary files a/src/main/resources/bin/win-x64-n/llama.dll and b/src/main/resources/bin/win-x64-n/llama.dll differ diff --git a/src/main/resources/bin/win-x64-n/mkl_core.2.dll b/src/main/resources/bin/win-x64-n/mkl_core.2.dll new file mode 100644 index 0000000..81d7ebc Binary files /dev/null and b/src/main/resources/bin/win-x64-n/mkl_core.2.dll differ diff --git a/src/main/resources/bin/win-x64-n/mkl_sycl_blas.5.dll b/src/main/resources/bin/win-x64-n/mkl_sycl_blas.5.dll new file mode 100644 index 0000000..64d98df Binary files /dev/null and b/src/main/resources/bin/win-x64-n/mkl_sycl_blas.5.dll differ diff --git a/src/main/resources/bin/win-x64-n/mkl_tbb_thread.2.dll b/src/main/resources/bin/win-x64-n/mkl_tbb_thread.2.dll new file mode 100644 index 0000000..cbf7923 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/mkl_tbb_thread.2.dll differ diff --git a/src/main/resources/bin/win-x64-n/mtmd.dll b/src/main/resources/bin/win-x64-n/mtmd.dll index 7457701..7467b21 100644 Binary files a/src/main/resources/bin/win-x64-n/mtmd.dll and b/src/main/resources/bin/win-x64-n/mtmd.dll differ diff --git a/src/main/resources/bin/win-x64-n/rpc-server.exe b/src/main/resources/bin/win-x64-n/rpc-server.exe index 4bc6804..aae694e 100644 Binary files a/src/main/resources/bin/win-x64-n/rpc-server.exe and b/src/main/resources/bin/win-x64-n/rpc-server.exe differ diff --git a/src/main/resources/bin/win-x64-n/svml_dispmd.dll b/src/main/resources/bin/win-x64-n/svml_dispmd.dll new file mode 100644 index 0000000..ab07566 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/svml_dispmd.dll differ diff --git a/src/main/resources/bin/win-x64-n/sycl-ls.exe b/src/main/resources/bin/win-x64-n/sycl-ls.exe new file mode 100644 index 0000000..e310dd7 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/sycl-ls.exe differ diff --git a/src/main/resources/bin/win-x64-n/sycl8.dll b/src/main/resources/bin/win-x64-n/sycl8.dll new file mode 100644 index 0000000..498ec16 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/sycl8.dll differ diff --git a/src/main/resources/bin/win-x64-n/tbb12.dll b/src/main/resources/bin/win-x64-n/tbb12.dll new file mode 100644 index 0000000..afc69c0 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/tbb12.dll differ diff --git a/src/main/resources/bin/win-x64-n/tcm.dll b/src/main/resources/bin/win-x64-n/tcm.dll new file mode 100644 index 0000000..d2a1ebf Binary files /dev/null and b/src/main/resources/bin/win-x64-n/tcm.dll differ diff --git a/src/main/resources/bin/win-x64-n/umf.dll b/src/main/resources/bin/win-x64-n/umf.dll new file mode 100644 index 0000000..c804fd5 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/umf.dll differ diff --git a/src/main/resources/bin/win-x64-n/ur_adapter_level_zero.dll b/src/main/resources/bin/win-x64-n/ur_adapter_level_zero.dll new file mode 100644 index 0000000..03235eb Binary files /dev/null and b/src/main/resources/bin/win-x64-n/ur_adapter_level_zero.dll differ diff --git a/src/main/resources/bin/win-x64-n/ur_adapter_level_zero_v2.dll b/src/main/resources/bin/win-x64-n/ur_adapter_level_zero_v2.dll new file mode 100644 index 0000000..398e7a2 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/ur_adapter_level_zero_v2.dll differ diff --git a/src/main/resources/bin/win-x64-n/ur_adapter_opencl.dll b/src/main/resources/bin/win-x64-n/ur_adapter_opencl.dll new file mode 100644 index 0000000..72adb51 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/ur_adapter_opencl.dll differ diff --git a/src/main/resources/bin/win-x64-n/ur_loader.dll b/src/main/resources/bin/win-x64-n/ur_loader.dll new file mode 100644 index 0000000..8b06d95 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/ur_loader.dll differ diff --git a/src/main/resources/bin/win-x64-n/ur_win_proxy_loader.dll b/src/main/resources/bin/win-x64-n/ur_win_proxy_loader.dll new file mode 100644 index 0000000..5e10831 Binary files /dev/null and b/src/main/resources/bin/win-x64-n/ur_win_proxy_loader.dll differ